package com.yunji.cabinet.dao;

import com.yunji.base.bo.ChangeBindBO;
import com.yunji.cabinet.bo.*;
import com.yunji.cabinet.domain.ContainerDO;
import com.yunji.cabinet.params.SpecificUpgradeCabinetParam;
import com.yunji.common.base.IBaseDao;
import com.yunji.storage.dto.StorageFiledDTO;

import java.util.List;

/**
 * @Project: yunji-coffee
 * @Package: com.yunji.cabinet.dao
 * @Title: CabinetDao
 * <p>
 * History:
 * Date                     Version     Author          Summary
 * ============================================================
 * 2024-10-24 13:58:56      V1.0        HuaAo       新建类
 */

public interface ICabinetDao extends IBaseDao<ContainerDO> {

    Long getBelongIdByContainerId(Long containerId);

    List<ContainerDO> search(CabinetListQueryBO bo);

    ContainerDO select(CabinetSelectQueryBo bo);

    boolean changeAgent(ChangeBindBO bo);

    boolean existsCabinet(CabinetCheckBO bo);

    boolean resetCabinetQrcode(Long cabinetId);

    int countCabinet(CabinetCountBO bo);

    List<String> searchTableField(StorageFiledDTO param);

    List<Long> searchContainerIdsBySiteId(Long siteId);

    ContainerDO getByQrcode(String qrCode);

    List<ContainerDO> specificUpgradeCabinetList(SpecificUpgradeCabinetBO bo);

    List<ContainerDO> specificUpgradeCabinetVOList(SpecificUpgradeCabinetParam param);

    boolean containerExistsSiteLocation(List<Long> locationIds);

    boolean existsCabinet(CabinetSelectQueryBo build);

    ContainerDO getByImei(String imei);

    String getImeiByQrcode(String qrcode);

    String getImeiById(Long id);
}